/**
 * 用户表
 */
let RoleModel=require("./role")
module.exports = function (sequelize, DataTypes,Model,Deferrable) {
    class UserModel extends Model {
    }
    UserModel.init({
        id: {
            type: DataTypes.INTEGER,
            primaryKey: true,
            autoIncrement: true,
            comment:"主键"
        },
        username: {
            type: DataTypes.STRING,
            allowNull: false,
            comment:"用户名"
        },
        phone: {
            type: DataTypes.STRING,
            allowNull: false,
            comment: "手机号，用来登录",
            unique: true
        },
        password: {
            type: DataTypes.STRING,
            allowNull: false,
            comment:"账号密码" 
        },
        address: {
            type: DataTypes.STRING,
            allowNull: true,
            comment:"取货地址" 
        },
        role_name: {
            type: DataTypes.STRING,
            allowNull: true,
            comment: "角色",
            defaultValue: "普通用户",
            references: {
                // 这是对另一个模型的参考
                model: RoleModel,
                // 这是引用模型的列名
                key: 'role_name',
                // 使用 PostgreSQL,可以通过 Deferrable 类型声明何时检查外键约束.
                deferrable: Deferrable.INITIALLY_IMMEDIATE
                // 参数:
                // - `Deferrable.INITIALLY_IMMEDIATE` - 立即检查外键约束
                // - `Deferrable.INITIALLY_DEFERRED` - 将所有外键约束检查推迟到事务结束
                // - `Deferrable.NOT` - 完全不推迟检查(默认) - 这将不允许你动态更改事务中的规则
              }
        }
    }, {
        sequelize,
        modelName:"user"
    })
    return UserModel
}